#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

//transform:搬运容器到另一个容器中
//函数原型：transform(iterator beg1, iterator end1, iterator beg2, _func);
//beg1 源容器开始迭代器  end1 源容器结束迭代器  beg2 目标容器开始迭代器  _func 函数或者函数对象
class TransForm {
public:
    int operator()(int val) {
        return val;
    }
};

class Print {
public:
    void operator()(int val) {
        cout << val << " ";
    }
};

void test() {
    vector<int> v;
    for (int i = 0; i < 10; ++i) {
        v.push_back(i * i);
    }
    vector<int> target;//目标容器
    target.resize(v.size());//目标容器需要提前开辟空间
    transform(v.begin(), v.end(), target.begin(), TransForm());
    for_each(target.begin(), target.end(), Print());
}

int main() {
    test();
    return 0;
}